package com.jvm;

/**
 * @Author: tgy
 * @Date: 2020-08-03 09:28
 */

import java.util.concurrent.TimeUnit;

/**
 * JVM 参数分类
 *
 * 1. 标准参数
 *  如 java -version
 *
 * 2. X 参数
 *  -Xint：解释执行
 *  -Xcomp：第一次使用就编译成本地代码
 *  -Xmixed：混合模式
 *
 * 3 XX 参数
 *
 *      3.1 Bool型XX参数
 *          如: -XX:(+/-)PrintGCDetails
 *          启动java类 java -XX:+PrintGCDetails JVM01
 *          查看PrintGCDetails 是否设置
 *          jps -l 找到对应的进程
 *          jinfo -flag PrintGCDetails proccessId
 *
 *
 *      3.2 key-value 键值对参数
 *          -XX:init
 */
public class JVM参数 {


    public static void main(String[] args) throws Exception{


//        TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);

        // -Xms20m -Xmx20m -XX:+PrintGCDetails
        System.out.println(Runtime.getRuntime().totalMemory());

        // 默认的堆的初始化大小为 物理内存的 64 分之一
        System.out.println(Runtime.getRuntime().totalMemory() / (1024 * 1024) + "M");

        // 默认堆的最大值为 物理内存的 4 分之一
        System.out.println(Runtime.getRuntime().maxMemory() / (1024 * 1024) + "M");

        // 打印jvm的默认参数
        // -XX:+PrintCommandLineFlags

        // -Xmn 设置年轻代的大小
        // -Xmn20M 设置年轻代为 20M

        //设置 元空间大小
        // -XX:MetaspaceSize
    }
}
